home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 9 / CDACTUAL9.iso / share / Dos / VARIOS / pascal / SWAG9605.DDD / 0046_Copying to the Clipboard.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1996-05-31  |  1.6 KB  |  85 lines

  1. {> How can I copy strings to the clipboard with TPW program?.
  2.  
  3. This procedure is triggered by a menu or button message:
  4. }
  5.  
  6.  
  7. PROCEDURE MyWindow.CopyToClipboard(VAR msg : tmessage);
  8.  
  9. VAR TextToCopy : array[0..255] of char;
  10.  
  11. BEGIN
  12.  
  13. MyEdit.GetText(TextToCopy,SizeOf(Tex tToCopy));
  14.  
  15. IF NOT CopyText(TextToCopy) then
  16.    messagebox(hWindow,'Hasn't worked!','Copy to Clipboard',mb_ok);
  17.  
  18. END;
  19.  
  20.  
  21. This function does the copy.
  22.  
  23.  
  24. FUNCTION MyWindow.CopyText(TextString : Pchar) : Boolean;
  25.  
  26. VAR StringGlobalHandle : THandle;
  27.  
  28.     StringGlobalPtr    : PChar;
  29.  
  30. BEGIN
  31.  
  32. CopyText := False;
  33. StringGlobalHandle := GlobalAlloc(gmem_Moveable,StrLen(TextString)+1);
  34. IF StringGlobalHandle <> 0 then
  35.    BEGIN
  36.    StringGlobalPtr := GlobalLock(StringGlobalHandle);
  37.    IF StringGlobalPtr <> nil then
  38.       BEGIN
  39.       StrCopy(StringGlobalPtr,TextString);
  40.       GlobalUnlock(StringGlobalHandle);
  41.       IF OpenClipboard(hWindow) then
  42.          BEGIN
  43.          EmptyClipboard;
  44.          SetClipboardData(cf_Text,StringGlobalHandle);
  45.          CloseClipboard;
  46.          CopyText := True;
  47.          END
  48.       ELSE GlobalFree(StringGlobalHandle);
  49.       END
  50.    ELSE GlobalFree(StringGlobalHandle);
  51.    END;
  52. END;
  53. It's partly taken from the German 1.5 manual. But Borland's program
  54.  
  55. didn't work, it had bugs (which I have corrected in the program above,
  56.  
  57. of course).
  58.  
  59.  
  60.  
  61.    Basti
  62.  
  63.  
  64.  
  65. E-Mail: 101674.2227@compuserve.com
  66.  
  67.  
  68.  
  69. --
  70.  
  71. ------------------------------------------------------------------
  72.  
  73.   Bastisoft    101674.2227@compuserve.com
  74.  
  75.  
  76.  
  77.   Fleestedt, Germany
  78.  
  79. ------------------------------------------------------------------
  80.  
  81.  
  82.  
  83.  
  84.  
  85.